package com.jhgsys.internal.system.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jhgsys.internal.common.converter.TimeConverter;
import com.wuwenze.poi.annotation.Excel;
import com.wuwenze.poi.annotation.ExcelField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * @author DingHaiTao
 * @className Tenant
 * @description 租户表
 * @date: 2024/7/17 15:25
 */
@Data
@TableName("BASIC_TENANT")
@Excel("租户信息表")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Tenant implements Serializable {

    private static final long serialVersionUID = -4352868070794165002L;

    /**
     * 租户 ID
     */
    @TableId(value = "tenant_id", type = IdType.ASSIGN_UUID)
    private String tenantId;

    /**
     * 租户名
     */
    @TableField("tenant_name")
    @ExcelField(value = "租户名")
    private String tenantName;


    /**
     * 租户名
     */
    @TableField("short_name")
    @ExcelField(value = "租户简称")
    private String shortName;

    /**
     * 是否系统对接
     */
    @TableField("system_interfacing_flg")
    @ExcelField(value = "是否系统对接")
    private String systemInterfacingFlg;

    /**
     * 系统对接AppId
     */
    @TableField("app_id")
    @ExcelField(value = "系统对接AppId")
    private String appId;

    /**
     * 系统对接AppSecret
     */
    @TableField("app_secret")
    @ExcelField(value = "系统对接AppSecret")
    private String appSecret;

    /**
     * 租户类型：1-总公司，2-子公司(默认)
     */
    @TableField("tenant_category")
    private String tenantCategory;

    /**
     * 公司分类 SAFETY_COMPANY_TYPE【可多选】
     */
    @TableField("tenant_type")
    @ExcelField(value = "公司分类")
    private String tenantType;

    /**
     * 公司编码
     */
    @TableField("tenant_code")
    @ExcelField(value = "公司编码")
    private String tenantCode;

    /**
     * 业务编码（影响业务模块中编码生成格式）
     */
    @TableField("business_code")
    @ExcelField(value = "业务编码")
    private String businessCode;

    /**
     * 上级公司Id
     */
    @TableField("parent_tenant_id")
    @ExcelField(value = "上级公司Id")
    private String parentTenantId;

    /**
     * 上级公司
     */
    @TableField("parent_tenant_name")
    @ExcelField(value = "上级公司")
    private String parentTenantName;


    /**
     * 统一社会信用代码
     */
    @TableField("tenant_credit_code")
    @ExcelField(value = "统一社会信用代码")
    private String tenantCreditCode;

    /**
     * 行政区域
     */
    @TableField("administrative_region")
    @ExcelField(value = "行政区域")
    private String administrativeRegion;

    /**
     * 国家/地区
     */
    @TableField("country")
    @ExcelField(value = "国家/地区")
    private String country;

    /**
     * 所在城市
     */
    @TableField("city")
    @ExcelField(value = "所在城市")
    private String city;

    /**
     * 所在街道
     */
    @TableField("street")
    @ExcelField(value = "所在街道")
    private String street;

    /**
     * 公司简介
     */
    @TableField("tenant_brief")
    @ExcelField(value = "公司简介")
    private String tenantBrief;

    /**
     * 经营地址
     */
    @TableField("business_address")
    @ExcelField(value = "经营地址")
    private String businessAddress;

    /**
     * 注册地址
     */
    @TableField("registered_address")
    @ExcelField(value = "注册地址")
    private String registeredAddress;

    /**
     * 经纬度
     */
    @TableField("coordinate")
    @ExcelField(value = "经纬度")
    private String coordinate;

    /**
     * 法人证件类型 1：身份证
     */
    @TableField("legal_credential_type")
    @ExcelField(value = "法人证件类型")
    private String legalCredentialType;

    /**
     * 法人证件编号
     */
    @TableField("legal_credential_no")
    @ExcelField(value = "法人证件编号")
    private String legalCredentialNo;

    /**
     * 法人姓名
     */
    @TableField("legal_name")
    @ExcelField(value = "法人姓名")
    private String legalName;

    /**
     * 法人电话
     */
    @TableField("legal_mobile")
    @ExcelField(value = "法人电话")
    private String legalMobile;

    /**
     * 主要负责人邮箱
     */
    @TableField("principal_email")
    @ExcelField(value = "主要负责人邮箱")
    private String principalEmail;

    /**
     * 主要负责人电话
     */
    @TableField("principal_mobile")
    @ExcelField(value = "主要负责人电话")
    private String principalMobile;

    /**
     * 主要负责人姓名
     */
    @TableField("principal")
    @ExcelField(value = "主要负责人姓名")
    private String principal;

    /**
     * 主要负责人手机号
     */
    @TableField("principal_telephone")
    @ExcelField(value = "主要负责人手机号")
    private String principalTelephone;

    /**
     * 安全负责人电话
     */
    @TableField("safety_user_mobile")
    @ExcelField(value = "安全负责人电话")
    private String safetyUserMobile;

    /**
     * 安全负责人
     */
    @TableField("safety_user_name")
    @ExcelField(value = "安全负责人")
    private String safetyUserName;

    /**
     * 安全负责人手机号
     */
    @TableField("safety_user_telephone")
    @ExcelField(value = "安全负责人手机号")
    private String safetyUserTelephone;

    /**
     * 安全负责人邮箱
     */
    @TableField("safety_user_email")
    @ExcelField(value = "主要负责人邮箱")
    private String safetyUserEmail;

    /**
     * 公司规模 SAFETY_COMPANY_SCALE
     */
    @TableField("scale")
    @ExcelField(value = "公司规模")
    private String scale;

    /**
     * 隶属关系
     */
    @TableField("affiliation")
    @ExcelField(value = "隶属关系")
    private String affiliation;

    /**
     * 单位属性
     */
    @TableField("attribute")
    @ExcelField(value = "单位属性")
    private String attribute;

    /**
     * 海控控股情况
     */
    @TableField("holding_situation")
    @ExcelField(value = "海控控股情况")
    private String holdingSituation;

    /**
     * 是否上传陆岸系统 0：不上传 1：上传
     */
    @TableField("statistics_flag")
    @ExcelField(value = "是否上传陆岸系统")
    private String statisticsFlag;

    /**
     * 行业领域
     */
    @TableField("industry_field")
    @ExcelField(value = "行业领域")
    private String industryField;

    /**
     * 经济类型
     */
    @TableField("economy_type")
    @ExcelField(value = "经济类型")
    private String economyType;

    /**
     * 经济类型
     */
    @TableField("economy_major_type")
    @ExcelField(value = "经济行业大类")
    private String economyMajorType;

    /**
     * 经济类型
     */
    @TableField("economy_minor_type")
    @ExcelField(value = "经济行业小类")
    private String economyMinorType;

    /**
     * 重大危险源
     */
    @TableField("major_flg")
    @ExcelField(value = "重大危险源")
    private String majorFlg;

    /**
     * 工贸企业分类
     */
    @TableField("industry_trade_type")
    @ExcelField(value = "工贸企业分类")
    private String industryTradeType;

    /**
     * 涉及危化品 0：否 1：是
     */
    @TableField("chemical_Flg")
    @ExcelField(value = "涉及危化品")
    private String chemicalFlg;

    /**
     * 危化品内容
     */
    @TableField("major_hazard")
    @ExcelField(value = "危化品内容")
    private String majorHazard;

    /**
     * 应急管理员人数
     */
    @TableField("emergency_manage_count")
    @ExcelField(value = "应急管理员人数")
    private Integer emergencyManageCount;

    /**
     * 注册安全工程师人数
     */
    @TableField("certified_safety_count")
    @ExcelField(value = "注册安全工程师人数")
    private Integer certifiedSafetyCount;

    /**
     * 最高固有风险等级
     */
    @TableField("inherent_level")
    @ExcelField(value = "最高固有风险等级")
    private String inherentLevel;

    /**
     * 重点风险
     */
    @TableField("major_risk")
    @ExcelField(value = "重点风险")
    private String majorRisk;

    /**
     * 安全主体责任制 0：否 1：是
     */
    @TableField("responsibility_flg")
    @ExcelField(value = "安全主体责任制")
    private String responsibilityFlg;

    /**
     * 安全重点防控风险
     */
    @TableField("risk_control")
    @ExcelField(value = "安全重点防控风险")
    private String riskControl;

    /**
     * 是否有安全机构 0：否 1：是
     */
    @TableField("safety_gear_flag")
    @ExcelField(value = "是否有安全机构")
    private String safetyGearFlag;

    /**
     * 安全管理人员数
     */
    @TableField("safety_manage_count")
    @ExcelField(value = "安全管理人员数")
    private Integer safetyManageCount;

    /**
     * 安全生产管理重点
     */
    @TableField("safety_production")
    @ExcelField(value = "安全生产管理重点")
    private String safetyProduction;

    /**
     * 涉及危险源内容和规模
     */
    @TableField("major_content")
    @ExcelField(value = "涉及危险源内容和规模")
    private String majorContent;

    /**
     * 员工状况
     */
    @TableField("employee_situation")
    @ExcelField(value = "员工状况")
    private String employeeSituation;

    /**
     * 经营状况
     */
    @TableField("manage_condition")
    @ExcelField(value = "经营状况")
    private String manageCondition;

    /**
     * 经营范围
     */
    @TableField("manage_scope")
    @ExcelField(value = "经营范围")
    private String manageScope;

    /**
     * 达标情况（应急）
     */
    @TableField("reach_condition")
    @ExcelField(value = "达标情况（应急）")
    private String reachCondition;

    /**
     * 达标有效期（应急）
     */
    @TableField("reach_date")
    @ExcelField(value = "达标有效期（应急）")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date reachDate;

    /**
     * 达标情况（交通）
     */
    @TableField("traffic_reach_condition")
    @ExcelField(value = "达标情况（交通）")
    private String trafficReachCondition;

    /**
     * 达标有效期（交通）
     */
    @TableField("traffic_reach_date")
    @ExcelField(value = "达标有效期（交通）")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date trafficReachDate;


    /**
     * 创建人
     */
    @TableField("created_by")
    @ExcelField("创建人")
    private String createdBy;

    /**
     * 创建时间
     */
    @TableField("created_time")
    @ExcelField(value = "创建时间", writeConverter = TimeConverter.class)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createdTime;

    /**
     * 更新人
     */
    @TableField("updated_by")
    @ExcelField("更新人")
    private String updatedBy;

    /**
     * 修改时间
     */
    @TableField("updated_time")
    @ExcelField(value = "修改时间", writeConverter = TimeConverter.class)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date updatedTime;

    /**
     * 删除人
     */
    @TableField("deleted_by")
    @ExcelField("删除人")
    private String deletedBy;

    /**
     * 删除时间
     */
    @TableField("deleted_time")
    @ExcelField(value = "删除时间", writeConverter = TimeConverter.class)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date deletedTime;

    /**
     * 状态 0：禁用 1：启用
     */
    @TableField("STATUS")
    @ExcelField(value = "状态", writeConverterExp = "0=禁用,1=启用")
    private String status;

    /**
     * 删除标记
     */
    @TableField("deleted_flg")
    @ExcelField("删除标记")
    private String deletedFlg;

}
